package jee.boot.module.bpm.dao;

import jee.boot.module.bpm.table.mysql.model.FormTable;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

@Mapper
public interface MysqlTableOperatorDao {
    /**
     * 检查表是否存在
     *
     * @param formTable formTable.tableName 需设置表名
     * @return
     */
    int existTable(FormTable formTable);

    /**
     * 创建表
     *
     * @param formTable formTable信息,以及column信息
     */
    void createTable(FormTable formTable);

    /**
     * 删除表
     *
     * @param formTable formTable.tableName 需设置表名
     */
    void dropTable(FormTable formTable);

    /**
     * 添加字段
     *
     * @param formTable formTable.columnList是需要被添加的字段
     */
    void addColumn(FormTable formTable);

    /**
     * 修改字段
     *
     * @param formTable formTable.columnList是需要被修改的字段
     */
    void modifyColumn(FormTable formTable);

    /**
     * 删除字段
     *
     * @param formTable formTable.columnList是需要被删除的字段
     */
    void dropColumn(FormTable formTable);

    /**
     * 查看表信息
     * @param formTable
     * @return
     */
    FormTable findTable(FormTable formTable);

    /**
     * 查看表所有列信息
     * @param formTable
     * @return
     */
    List<Map<String,Object>> findTableColumns(FormTable formTable);

    /**
     * 修改表注释
     * @param formTable
     */
    void alterTableComment(FormTable formTable);

    /**
     *
     * @param formTable
     * @return
     */
    List<FormTable> findTableList(FormTable formTable);
}
